﻿Imports Logica

''' <summary>
''' Modifica las cargas sociales del sistema
''' </summary>
''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
Public Class ModificarCargasSociales
    ''' <summary>
    ''' Se ejecuta al iniciar el formulario
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub ModificarCargasSociales_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not Gestor.usuarioTienePermiso(Gestor.usuarioActual("identificacion"), 34) Then

            txtPorcCCSS.ReadOnly = True
            txtPorcTrabajador.ReadOnly = True
            txtOtrosP.ReadOnly = True
            txtOtrosT.ReadOnly = True
            btnLimpiar.Enabled = False
            btnModificar.Enabled = False

        End If

        Try
            ponerDatos(Gestor.cargaSocialBuscar)
        Catch es As SqlClient.SqlException When es.Number.Equals(4060)
            MessageBox.Show("Error de conexión con la base de datos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch ex As Exception
            MessageBox.Show("Error en: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub

    ''' <summary>
    ''' Se utiliza para limpiar los campos de texto
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpiar.Click

        txtPorcCCSS.Text = ""
        txtPorcTrabajador.Text = ""
        txtOtrosP.Text = ""
        txtOtrosT.Text = ""
        lblError.Text = ""

    End Sub

    ''' <summary>
    ''' Pone los datos provenientes de la BD en sus respectivos campos
    ''' </summary>
    ''' <param name="p_listaCargas">Lista con las cargas sociales</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/20100</remarks>
    Private Sub ponerDatos(ByVal p_listaCargas As List(Of Hashtable))

        Try

            For Each lista As Hashtable In p_listaCargas

                txtPorcCCSS.Text = lista("ccssPatrono") * 100
                txtPorcTrabajador.Text = lista("ccssTrabajador") * 100
                txtOtrosP.Text = lista("otrosPatrono") * 100
                txtOtrosT.Text = lista("otrosTrab") * 100

            Next

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    ''' <summary>
    ''' Si se ingresa una letra el sistema no maneja el evento, por ende no 
    ''' se ingresa la letra
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtPorcCCSS_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPorcCCSS.KeyPress

        If Char.IsNumber(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = True
        ElseIf (Char.IsSymbol(e.KeyChar)) Or (Char.IsPunctuation(e.KeyChar)) Then
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar símbolos en el campo '" & txtPorcCCSS.Tag & "'"
            e.Handled = True
        Else
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar letras en el campo '" & txtPorcCCSS.Tag & "'"
            e.Handled = True
        End If

    End Sub

    ''' <summary>
    ''' Si se ingresa una letra el sistema no maneja el evento, por ende no 
    ''' se ingresa la letra
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtPorcTrabajador_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPorcTrabajador.KeyPress

        If Char.IsNumber(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = True
        ElseIf (Char.IsSymbol(e.KeyChar)) Or (Char.IsPunctuation(e.KeyChar)) Then
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar símbolos en el campo '" & txtPorcCCSS.Tag & "'"
            e.Handled = True
        Else
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar letras en el campo '" & txtPorcTrabajador.Tag & "'"
            e.Handled = True
        End If

    End Sub

    ''' <summary>
    ''' Si se ingresa una letra el sistema no maneja el evento, por ende no 
    ''' se ingresa la letra
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtOtrosP_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOtrosP.KeyPress

        If Char.IsNumber(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = True
        ElseIf (Char.IsSymbol(e.KeyChar)) Or (Char.IsPunctuation(e.KeyChar)) Then
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar símbolos en el campo '" & txtPorcCCSS.Tag & "'"
            e.Handled = True
        Else
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar letras en el campo '" & txtOtrosP.Tag & "'"
            e.Handled = True
        End If
    End Sub

    ''' <summary>
    ''' Si se ingresa una letra el sistema no maneja el evento, por ende no 
    ''' se ingresa la letra
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtOtrosT_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtOtrosT.KeyPress

        If Char.IsNumber(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = True
        ElseIf (Char.IsSymbol(e.KeyChar)) Or (Char.IsPunctuation(e.KeyChar)) Then
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar símbolos en el campo '" & txtPorcCCSS.Tag & "'"
            e.Handled = True
        Else
            lblError.ForeColor = Color.Red
            lblError.Text = "No se pueden ingresar letras en el campo '" & txtOtrosT.Tag & "'"
            e.Handled = True
        End If
    End Sub

    ''' <summary>
    ''' Se utiliza para modificar las cargas sociales
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click

        Dim porcCCSS As Double
        Dim porcTrab As Double
        Dim otrosPat As Double
        Dim otrosTrab As Double

        ' Validar los controles de texto.
        For Each control As Control In gbModificarCargas.Controls
            If TypeOf control Is TextBox Then
                If control.Text = "" Or control.Text.Trim = "" Then
                    control.Focus()
                    lblError.ForeColor = Color.Red
                    lblError.Text = "El campo '" & control.Tag & "' está vacío."
                    Exit Sub
                End If
            End If
        Next


        If (CDbl(txtPorcCCSS.Text) <= 100) And (CDbl(txtPorcTrabajador.Text) <= 100) And (CDbl(txtOtrosP.Text) <= 100) And (CDbl(txtOtrosT.Text) <= 100) Then

            Try

                porcCCSS = CDbl(txtPorcCCSS.Text)
                porcTrab = CDbl(txtPorcTrabajador.Text)
                otrosPat = CDbl(txtOtrosP.Text)
                otrosTrab = CDbl(txtOtrosT.Text)

                If MessageBox.Show("¿Desea modificar las cargas sociales del sistema?", "Información", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then

                    porcCCSS = porcCCSS / 100
                    porcTrab = porcTrab / 100
                    otrosPat = otrosPat / 100
                    otrosTrab = otrosTrab / 100

                    Gestor.actualizarCargaSocial(porcCCSS, porcTrab, otrosPat, otrosTrab)
                    lblError.ForeColor = Color.Green
                    lblError.Text = "Las cargas sociales fueron modificadas exitosamente."

                End If

            Catch ex As Exception

                lblError.ForeColor = Color.Red
                lblError.Text = ex.Message

            End Try

        Else

            lblError.ForeColor = Color.Red
            lblError.Text = "El valor de la carga social no debe exceder el 100%."

        End If

    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textbox se limpia el label de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtPorcCCSS_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPorcCCSS.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textbox se limpia el label de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtPorcTrabajador_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPorcTrabajador.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textbox se limpia el label de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtOtrosP_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtOtrosP.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Si cambia el texto en el textbox se limpia el label de error
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 17/06/2010, Modificado: 30/06/2010</remarks>
    Private Sub txtOtrosT_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtOtrosT.TextChanged
        lblError.Text = ""
    End Sub
End Class
